#include "server_Planta.h"
#include "server_Coordenada.h"
#include "server_IOcupante.h"
#include "server_Configuracion.h"

Planta::Planta() {
}

Planta::Planta(string direccion, Coordenada pos) {
    this->direccion = direccion;
    this->posicion = pos;
    establecerCodigo();
    tiempoRegeneracionBomba = Configuracion::getTiempoRegeneracionBomba() + 1;
    estadoRegeneracion = tiempoRegeneracionBomba;
}

Planta::~Planta() {
}

Coordenada Planta::getPosicion() {
    return posicion;
}

BombaPlanta* Planta::disparar() {
    if (tiempoRegeneracionBomba <= estadoRegeneracion) {
        estadoRegeneracion = 0;
        return (new BombaPlanta(Configuracion::getDesplazamientoDisparo(), posicion,
                direccion, Configuracion::getAlcanceBomba()));
    } else {
        estadoRegeneracion++;
        return NULL;
    }

}

void Planta::colisionarCon(IOcupante* ocupante) {
    ocupante->colisionarConPlanta();
}

void Planta::mover() {
    /* Las plantas no se mueven. */
}

void Planta::recibirExplosion() {
    //No le pasa nada
}

void Planta::retroceder() {
}

void Planta::establecerCodigo() {
    if (direccion == string("arriba")) codigo = string("7");
    else if (direccion == string("abajo")) codigo = string("@");
    else if (direccion == string("derecha")) codigo = string("·");
    else if (direccion == string("izquierda")) codigo = string("~");
}